package zmee.util;

import java.io.IOException;

import kd.bos.bill.BillShowParameter;
import kd.bos.bill.OperationStatus;
import kd.bos.form.FormShowParameter;
import kd.bos.form.MobileFormShowParameter;
import kd.bos.form.ShowType;
import kd.bos.list.ListShowParameter;
import kd.bos.list.MobileListShowParameter;

/**
 * @Author: zyj
 * @Date: 2023/6/20 14:37
 * @Description: 页面内嵌另一页面工具类: 存放一些跳转页面是内嵌形式的方法
 */
public class ShowFormUtils {

    /**
     * 获取嵌入页面的 formshowparameter
     *
     * @param formId    要嵌入的页面id
     * @param targetKey 被嵌入的面板
     * @return
     * @throws IOException
     */
    public static FormShowParameter inContainerParameter(String formId, String targetKey) throws IOException {
        FormShowParameter formShowParameter = new FormShowParameter();
        // 显示样式（内嵌）
        formShowParameter.getOpenStyle().setShowType(ShowType.InContainer);
        // 将页面嵌入哪个容器，容器标识
        formShowParameter.getOpenStyle().setTargetKey(targetKey);
        // 页面打开状态
        formShowParameter.setStatus(OperationStatus.VIEW);
        formShowParameter.setFormId(formId);
        // 设置为异步处理
        formShowParameter.setSendToClient(true);
        return formShowParameter;
    }

    /**
     * 内嵌列表界面
     *
     * @param formId 要嵌入的页面id
     * @param targetKey 被嵌入的面板
     * @return
     * @throws IOException
     */
    public static ListShowParameter inContainerListParameter(String formId, String targetKey) throws IOException {
        ListShowParameter showParameter = new ListShowParameter();
        // showParameter.setFormId("bos_listf7");
        showParameter.setBillFormId(formId);
        // 设置为异步处理
        showParameter.setSendToClient(true);
        // 设置打开方式为内嵌
        showParameter.getOpenStyle().setShowType(ShowType.InContainer);
        // 设置要嵌入到哪个模块下(flex面版)
        showParameter.getOpenStyle().setTargetKey(targetKey);
        showParameter.setStatus(OperationStatus.VIEW);
        // 设置列表显示
        showParameter.setLookUp(true);
        return showParameter;
    }

    /**
     * 弹出表单
     *
     * @param formId
     * @return
     * @throws IOException
     */
    public static FormShowParameter inShowFormParameter(String formId) throws IOException {
        FormShowParameter formShowParameter = new FormShowParameter();
        formShowParameter.getOpenStyle().setShowType(ShowType.Modal);
        formShowParameter.setStatus(OperationStatus.VIEW);
        formShowParameter.setFormId(formId);
        return formShowParameter;
    }

    /**
     * 弹出单据
     *
     * @param formId
     * @return
     * @throws IOException
     */
    public static BillShowParameter inShowBillParameter(String formId, String targetKey) throws IOException {
        BillShowParameter billShowParameter = new BillShowParameter();
        // 显示样式（内嵌）
        billShowParameter.getOpenStyle().setShowType(ShowType.InContainer);
        // 将页面嵌入哪个容器，容器标识
        billShowParameter.getOpenStyle().setTargetKey(targetKey);
        // 页面打开状态
        billShowParameter.setStatus(OperationStatus.VIEW);
        billShowParameter.setFormId(formId);
        // formShowParameter.setSendToClient(true); //设置为异步处理
        return billShowParameter;
    }

    // 移动端弹出表单

    /**
     * 弹出表单
     *
     * @param formId
     * @throws IOException
     * @returnMobileListShowParameter
     */
    public static MobileFormShowParameter inMobilShowFormParameter(String formId) throws IOException {
        MobileFormShowParameter formShowParameter = new MobileFormShowParameter();
        formShowParameter.getOpenStyle().setShowType(ShowType.Modal);
        formShowParameter.setStatus(OperationStatus.VIEW);
        formShowParameter.setFormId(formId);
        // formShowParameter.setSendToClient(true); //设置为异步处理
        return formShowParameter;
    }

    /**
     * 弹出表单
     *
     * @param formId
     * @throws IOException
     * @returnMobileListShowParameter
     */
    public static MobileListShowParameter inMobListShowFormParameter(String formId) throws IOException {
        MobileListShowParameter mobileListShowParameter = new MobileListShowParameter();
        mobileListShowParameter.getOpenStyle().setShowType(ShowType.Modal);
        mobileListShowParameter.setStatus(OperationStatus.VIEW);
        mobileListShowParameter.setFormId("bos_listf7");
        mobileListShowParameter.setBillFormId(formId);
        // formShowParameter.setSendToClient(true); //设置为异步处理
        return mobileListShowParameter;
    }
}


